/*************************************************************************************
*Copyright (c) 2011, Intel Mobile Communications GmbH. 
*All rights reserved.
*
*Redistribution and use in source and binary forms, with or without
*modification, are permitted provided that the following conditions are met:
*    * Redistributions of source code must retain the above copyright
*      notice, this list of conditions and the following disclaimer.
*    * Redistributions in binary form must reproduce the above copyright
*      notice, this list of conditions and the following disclaimer in the
*      documentation and/or other materials provided with the distribution.
*    * Neither the name of the <organization> nor the
*      names of its contributors may be used to endorse or promote products
*      derived from this software without specific prior written permission.
*
*THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
*ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
*WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
*DISCLAIMED. IN NO EVENT SHALL INTEL MOBILE COMMUNICATIONS GMBH. BE LIABLE FOR ANY
*DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
*(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
*LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
*ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
*(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
*SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*************************************************************************************/



#ifndef CEF_SYSTEM_H
#define CEF_SYSTEM_H
#include "cef_system_properties.h"
#include "cef_domain.h"
#include "cef_block.h"
#include "cef_link.h"
#include "cef_routes.h"
#include <vector>
#ifdef _DEBUG
#include <iostream>
#endif
class cef_system
{
	protected:
	cef_system_properties* system_properties;
	std::vector<cef_domain*>* domains;
	std::vector<cef_block*>* blocks;
	std::vector<cef_link*>* links;
	cef_routes* routes;
	public:
	cef_system();
	cef_system(cef_system_properties*,std::vector<cef_domain*>*,std::vector<cef_block*>*,std::vector<cef_link*>*, cef_routes*);
	~cef_system();
	//Setters
	void setProperties(cef_system_properties*);
	void setDomains(std::vector<cef_domain*>*);
	void setBlocks(std::vector<cef_block*>*);
	void setLinks(std::vector<cef_link*>*);
	void setRoutes(cef_routes*);
	//Getters
	cef_system_properties* getProperties();
	std::vector<cef_domain*>* getDomains();
	std::vector<cef_block*>* getBlocks();
	std::vector<cef_link*>* getLinks();
	cef_routes* getRoutes();
#ifdef _DEBUG
	void print();
#endif
};
#endif
